/*
 * Copyright (c) 2018 THL A29 Limited, a Tencent company. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

namespace TencentCloud.Tbaas.V20180416.Models
{
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using TencentCloud.Common;

    public class CreateChaincodeAndInstallForUserRequest : AbstractModel
    {
        
        /// <summary>
        /// 模块名，本接口取值：chaincode_mng
        /// </summary>
        [JsonProperty("Module")]
        public string Module{ get; set; }

        /// <summary>
        /// 操作名，本接口取值：chaincode_create_and_install_for_user
        /// </summary>
        [JsonProperty("Operation")]
        public string Operation{ get; set; }

        /// <summary>
        /// 区块链网络ID，可在区块链网络详情或列表中获取
        /// </summary>
        [JsonProperty("ClusterId")]
        public string ClusterId{ get; set; }

        /// <summary>
        /// 调用合约的组织名称，可以在组织管理列表中获取当前组织的名称
        /// </summary>
        [JsonProperty("GroupName")]
        public string GroupName{ get; set; }

        /// <summary>
        /// 合约安装节点名称，可以在通道详情中获取该通道上的节点名称
        /// </summary>
        [JsonProperty("PeerName")]
        public string PeerName{ get; set; }

        /// <summary>
        /// 智能合约名称，格式说明：以小写字母开头，由2-12位数字或小写字母组成
        /// </summary>
        [JsonProperty("ChaincodeName")]
        public string ChaincodeName{ get; set; }

        /// <summary>
        /// 智能合约版本，格式说明：由1-12位数字、小写字母、特殊符号(“.”)组成，如v1.0
        /// </summary>
        [JsonProperty("ChaincodeVersion")]
        public string ChaincodeVersion{ get; set; }

        /// <summary>
        /// 智能合约代码文件类型，支持类型：
        /// 1. "go"：.go合约文件
        /// 2. "gozip"：go合约工程zip包，要求压缩目录为代码根目录
        /// 3. "javazip"：java合约工程zip包，要求压缩目录为代码根目录
        /// 4. "nodezip"：nodejs合约工程zip包，要求压缩目录为代码根目录
        /// </summary>
        [JsonProperty("ChaincodeFileType")]
        public string ChaincodeFileType{ get; set; }

        /// <summary>
        /// 合约内容，合约文件或压缩包内容的base64编码，大小要求小于等于5M
        /// </summary>
        [JsonProperty("Chaincode")]
        public string Chaincode{ get; set; }


        /// <summary>
        /// For internal usage only. DO NOT USE IT.
        /// </summary>
        public override void ToMap(Dictionary<string, string> map, string prefix)
        {
            this.SetParamSimple(map, prefix + "Module", this.Module);
            this.SetParamSimple(map, prefix + "Operation", this.Operation);
            this.SetParamSimple(map, prefix + "ClusterId", this.ClusterId);
            this.SetParamSimple(map, prefix + "GroupName", this.GroupName);
            this.SetParamSimple(map, prefix + "PeerName", this.PeerName);
            this.SetParamSimple(map, prefix + "ChaincodeName", this.ChaincodeName);
            this.SetParamSimple(map, prefix + "ChaincodeVersion", this.ChaincodeVersion);
            this.SetParamSimple(map, prefix + "ChaincodeFileType", this.ChaincodeFileType);
            this.SetParamSimple(map, prefix + "Chaincode", this.Chaincode);
        }
    }
}

